"""
__author__ = 'heyanmin'
__time__ = '2021/8/7 1:51 下午'
"""
"""
算法性能评估，关注点:时间复杂度 和空间复杂度.
时间复杂度：
规模: 不同量级有不同的速度，比如水 vs 水杯: 水
测试环境: 在不同测试环境，速度也不同，比如手机 vs 电脑: 电脑
O 表示渐进时间复杂度，表示代码执行时间随数据规模增长的变化趋势 （通过代码的规模 来预估 代码运行的时间，预估的标准0）
如何计算代码运行的时间（时间复杂度计算）：1.只关注循环次数多的代码2.选大量级 3.嵌套循环要乘积

空间复杂度：  算法的存储空间与数据规模之间的增长关系
空间复杂度计算和时间一致
"""
# 以下代码运行时间是(2n+1)*u  每一行代码运行时间；运行时间：T(n) = (2n + 1) * unit
#  T(n) = O(f(n)) , O表示 T(n) 与 f(n) 成正比
# 当 n 很大时,低阶、常量、系数三部分并不左右增长趋势，所以都可以忽略．就可以记为：T(n) = O(n)； T(n) = O(n2)。

#只关注循环次数多的代码，以下时间复杂度O(n)
def tmp(n):
    add = 0          # 1次
    for i in range(n):   #n次
        add += i    #1次
    return add     # O(n) 时间n次


# 选大量级,  时间复杂度 O(n*n) 「相同规模比较，选大」
def tmp(n):
    for i in range(999):    #运行999次
        print(1)
    for i in range(n):    ##运行n次,n是无穷大
        print(1)
    for i in range(n):
        for i in range(n):
            print(2)        # 运行了n*n

# 嵌套循环要乘积，时间复杂度O(n*n)
def tmp(n):
    for i in range(n):
        a(i)
def a(n):
    for i in range(n):
        print('c')

# 时间复杂度 O(M+n)，同等规模，相加
def tmp(m,n):
    for i in range(m):  #m 无穷大
        print(1)
    for i in range(n):  # n无穷大
        print(2)

# 空间复杂度 O(n)
def tmp(n):
    a = [1]*n   #n  list占有的空间
    for i in a:  #1
        print(i)


if __name__ == '__main__':
    print("11")

